package cn.doitedu.javase.socket.demo3;


import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Random;

/**
 * @Author: 深似海
 * @Site: <a href="www.51doit.com">多易教育</a>
 * @QQ: 657270652
 * @Date: 2024/2/4
 * @Desc: 学大数据，上多易教育
 * <p>
 * 协议：
 * 交互数据：字符串
 * 消息没有头，但是有一个结束标记： 回车
 * <p>
 * 认证：
 * 客户端： 天王盖地虎
 * 服务端： 宝塔镇河妖
 **/
public class Server {

    public static void main(String[] args) throws IOException {

        ServerSocket serverSocket = new ServerSocket(9099);

        // 一个连接通信完毕后，会再次循环回来等待新的连接
        Random random = new Random();
        while (true) {
            Socket socket = serverSocket.accept();

            try {
                InputStream inputStream = socket.getInputStream();
                OutputStream outputStream = socket.getOutputStream();

                BufferedReader br = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
                BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"));


                String line = br.readLine();
                if (!"天王盖地虎".equals(line)) {
                    bw.write("你有病,滚!");
                    bw.newLine();
                    bw.flush();

                    br.close();
                    bw.close();
                    socket.close();
                } else {
                    // 回一个认证消息
                    bw.write("宝塔镇河妖");
                    bw.newLine();
                    bw.flush();

                    // 开始循环往复，接收客户端的真实信息
                    while ((line = br.readLine()) != null) {
                        System.out.println("客户端消息: => " + line);

                        bw.write(line + " -> " + random.nextInt());
                        bw.newLine();
                        bw.flush();

                    }
                    System.out.println("客户端可能已经关闭流了");
                }

            }catch (Exception e ){

            }
        }
    }
}

